package utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


/**
 * 获取sqlSession对象的工具类
 * @author 飞哥
 * @version V1.0
 * @package utils
 * @date 2021/7/7 8:25
 */
public class MyBatisUtil {
    private static SqlSessionFactory factory = null;

    //使用静态代码块创建一次sqlSessionFactory对象
    static {
        try {
            //创建sqlSessionFactory对象
            //SqlSessionFactoryBuilder 对象在创建完工厂对象后，就完成了其历史使命，即可被销毁。所以，一般会将
            //该 SqlSessionFactoryBuilder 对象创建为一个方法内的局部对象，方法结束，对象销毁。
            factory =  new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
        } catch (Exception e) {
            factory = null;
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        SqlSession sqlSession = null;
        //获取sqlSession对象
        if (factory != null) {
            sqlSession = factory.openSession();//默认是手动提交事务
        }
        return sqlSession;
    }
}
